package com.xinxi11.project.qx.services;

import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.xinxi11.module.core.service.IBaseService;
import com.xinxi11.project.qx.beans.QxModule;

/**
 * 请在此加入你的功能说明
 * 
 * @author 李国江
 * @date 2011-4-29
 */
public interface IQxModuleService extends IBaseService {
	/**
	 * 根据用户查询用户的自定义链接
	 * 
	 * @param userId
	 * @return @
	 */
	public JSONObject findArrayJonsModulePageLiknByUserId(Long userId);

	/**
	 * 根据用户Id查询模块信息封装成Json对象(生成人员模块树)
	 * 
	 * @return
	 */
	public JSONArray findArrayJonsModuleByUserId(Long userId);

	/**
	 * 根据角色Id查询模块信息封装成Json对象(生成角色模块树)
	 * 
	 * @param roleId
	 * @return @
	 */
	public JSONArray findArrayJsonModuleByRoleId(String roleId);

	/**
	 * 根据父模块Id查询所有下属子模块（包含父模块）信息封装成Json对象(生成模块树)
	 * 
	 * @return
	 */
	public JSONArray findArrayJonsModuleByModuleId(String moduleId, Integer display);

	/**
	 * 根据用户Id查询模块信息
	 * 
	 * @return
	 */
	public List<QxModule> findArrayJonsModuleByUserId(List<String> roleIds);

	/**
	 * 根据父模块Id查询所有子模块Id（包括父模块）
	 * 
	 * @param moduleId
	 * @return
	 */
	public List<QxModule> findChildrenModuleByModuleId(String moduleId, Integer display);

	/**
	 * 根据模块Id查询详细信息
	 * 
	 * @return @
	 */
	public QxModule findModuleByModuleId(String moduleId);

	/**
	 * 根据模块Id删除模块
	 * 
	 * @param moduleId
	 * @return
	 */
	public boolean deleteModuleNode(String moduleId);

	/**
	 * 修改模块信息
	 * 
	 * @param qxModule
	 * @return @
	 */
	public boolean updateQxModule(QxModule qxModule);

	/**
	 * 当添加时，跟模块中的相应属性赋值
	 * 
	 * @param qxModule
	 * @return @
	 */
	public boolean saveQxModule(QxModule qxModule);

	/**
	 * 根据模块ID查询子操作名称，属性值
	 * 
	 * @param ids
	 * @return @
	 */
	public Map findOpersFieldsByIds(String id);

	// 查询模块下的操作信息
	public List<QxModule> findOpers(String operationIds);

	/**
	 * 根据模块Id查询模块下的权限
	 * 
	 * @param moduleId
	 * @return @
	 */
	public List<String> findModuleQxList(String moduleId);

	/**
	 * 移动拖拽节点后修改模块信息
	 * 
	 * @param module
	 *            @
	 */
	public void updateModuoeByMoveNode(QxModule module);

	/**
	 * 查询出模块大类(父Id为-1)
	 * 
	 * @return
	 */
	public List<QxModule> findQxModuleByParentId();

	/**
	 * 根据模块Id查询出操作和属性列表
	 * 
	 * @param moduleId
	 * @return
	 */
	public JSONObject findModuleFieldOper(String moduleId, String roleId);

	/**
	 * 根据角色Id和模块查询出操作和属性列表
	 * 
	 * @param moduleId
	 * @return
	 */
	public JSONArray findModuleFieldOperByRoleIds(String moduleId, Integer userId);

	/**
	 * 根据角色和模块查询封装模块树
	 * 
	 * @param roleId
	 * @param moduleId
	 * @param flag
	 * @param display
	 * @return @
	 */
	public JSONArray findArrayJsonQxModuleByRoleIdModuleId(String roleId, String moduleId, boolean flag, Integer display);

	/**
	 * 根据PageUrl查询
	 * 
	 * @param pageUrl
	 * @return @
	 */
	public QxModule findQxModuleByUrl(String pageUrl);

	/**
	 * 判断此人是否用于此模块的权限
	 * 
	 * @param userId
	 * @param moduleName
	 * @return @
	 */
	Boolean isHaveRole(Integer userId, String moduleName);
}
